package uiMain;

import UI.FramePrincipal;
import accesoremotoservidor.ControladorCitasRemoto;
import excepciones.NoSeEncontroXMLExcepcion;
import gestorBD.Controlador;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;


public class bienRaizOk {

    public static ControladorCitasRemoto claseR;
    public static FramePrincipal ventana;

    public static void main(String[] args) throws InterruptedException {

        //Se carga el XML
        try {
            Controlador.cargarXML();
        } catch (NoSeEncontroXMLExcepcion ex) {
            Controlador.cargarCasosDePrueba();
        }
        
        //Se cambia el look and feel
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(bienRaizOk.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(bienRaizOk.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(bienRaizOk.class.getName()).log(Level.SEVERE, null, ex);
        } catch (UnsupportedLookAndFeelException ex) {
            Logger.getLogger(bienRaizOk.class.getName()).log(Level.SEVERE, null, ex);
        }

        //Se inicia el servidor para que los invitados puedan conectarse
        try {
            iniciarRegistro(1099);
            claseR = new ControladorCitasRemoto();
            Naming.rebind("controlador", claseR);
        } catch (RemoteException | MalformedURLException ex) {
            System.out.println("Excepcion " + ex);
        }

        //Se inicializa la GUI
        ventana = new FramePrincipal();
        ventana.mostrarPantallaParaIniciarSesion();
        ventana.setVisible(true);
    }

    private static void iniciarRegistro(int puerto) throws RemoteException {
        try {
            Registry registry = LocateRegistry.getRegistry();
            registry.list();
        } catch (RemoteException ex) {
            System.out.println("No hay un RMI registry en el puerto " + puerto);
            LocateRegistry.createRegistry(puerto);
            System.out.println("RMI registry creado en el puerto " + puerto);
        }
    }


}
